

client tarafından bir iyileştirme ms geliştirme





item.cpp

// arat:


CItem::CItem(DWORD dwVnum)
    : m_dwVnum(dwVnum), m_bWindow(0), m_dwID(0), m_bEquipped(false), m_dwVID(0), m_wCell(0), m_dwCount(0), m_lFlag(0), m_dwLastOwnerPID(0),
    m_bExchanging(false), m_pkDestroyEvent(NULL), m_pkUniqueExpireEvent(NULL), m_pkTimerBasedOnWearExpireEvent(NULL), m_pkRealTimeExpireEvent(NULL),
    m_pkExpireEvent(NULL),
       m_pkAccessorySocketExpireEvent(NULL), m_pkOwnershipEvent(NULL), m_dwOwnershipPID(0), m_bSkipSave(false), m_isLocked(false),
    m_dwMaskVnum(0), m_dwSIGVnum (0)
{
    memset( &m_alSockets, 0, sizeof(m_alSockets) );
    memset( &m_aAttr, 0, sizeof(m_aAttr) );
}
// extend it with ", m_bIsChangingAttr(false)" like shown:


CItem::CItem(DWORD dwVnum)
    : m_dwVnum(dwVnum), m_bWindow(0), m_dwID(0), m_bEquipped(false), m_dwVID(0), m_wCell(0), m_dwCount(0), m_lFlag(0), m_dwLastOwnerPID(0),
    m_bExchanging(false), m_pkDestroyEvent(NULL), m_pkUniqueExpireEvent(NULL), m_pkTimerBasedOnWearExpireEvent(NULL), m_pkRealTimeExpireEvent(NULL),
    m_pkExpireEvent(NULL),
       m_pkAccessorySocketExpireEvent(NULL), m_pkOwnershipEvent(NULL), m_dwOwnershipPID(0), m_bSkipSave(false), m_isLocked(false),
    m_dwMaskVnum(0), m_dwSIGVnum (0), m_bIsChangingAttr(false)
{
    memset( &m_alSockets, 0, sizeof(m_alSockets) );
    memset( &m_aAttr, 0, sizeof(m_aAttr) );
}
// arat:


    m_bSkipSave = false;
// aşağıya ekle:


    m_bIsChangingAttr = false;
// arat:


    if (!m_pOwner || !m_pOwner->GetDesc())
        return;
// aşağıya ekle:


    if (IsChangingAttr())
        return;



////////////////////////////
item.h

// arat:


        DWORD    GetSIGVnum() const
        {
            return m_dwSIGVnum;
        }
// aşağıya ekle:


    public:
        bool        IsChangingAttr() { return m_bIsChangingAttr; }
        void        SetChangingAttr(bool changing) { m_bIsChangingAttr = changing; }
    private:
        bool        m_bIsChangingAttr;

////////////////////////////////////////////////////////////

item_attribute.cpp

 
// inside function "ChangeAttribute" arat:


    int iAttributeCount = GetAttributeCount();
// aşağıya ekle:


    SetChangingAttr(true);
// inside function "ChangeAttribute" arat:


    for (int i = GetAttributeCount(); i < iAttributeCount; ++i)
    {
        if (aiChangeProb == NULL)
        {
            PutAttribute(tmpChangeProb);
        }
        else
        {
            PutAttribute(aiChangeProb);
        }
    }
// aşağıya ekle:


    SetChangingAttr(false);
    UpdatePacket();